#ifndef FS_UNIFORM_DEFINES
#define FS_UNIFORM_DEFINES

#define U_NUM_UNIFORMS 46

const char* fs_uniform_names(unsigned int index);

#define U_UNDEFINED -1

// Transformations
#define U_MODEL 0
#define U_INV_TRANS 1
#define U_PERSP 2
#define U_VIEW 3
#define U_VIEW_INV_TRANS 23
#define U_LAST_MODEL 33
#define U_INV_PERSP 36

// Materials
#define U_SPECULAR_EXP 4
#define U_AMBIENT 5
#define U_DIFFUSE 6
#define U_SPECULAR 7
#define U_TEXTURE 8

// Hemisphere Lighting
#define U_UP 9
#define U_DOWN 10
#define U_TOP_COLOR 11
#define U_BOTTOM_COLOR 12

// General Lighting
#define U_BLEND_WEIGHT 13
#define U_NUM_LIGHTS 14
#define U_LIGHT_COLOR 15
#define U_LIGHT_POSITION 16
#define U_LIGHT_DIRECTION 17

// Spot Light
#define U_HALF_ANGLE_COS 18
#define U_CUTOFF_NEAR 19
#define U_FADE_NEAR 20
#define U_CUTOFF_FAR 21
#define U_FADE_FAR 22

// G-Buffer Viewing
#define U_GBUFFER_VIEW 24

// Full-screen quad rendering
#define U_SCREEN_WIDTH 25
#define U_SCREEN_HEIGHT 26
#define U_FAR 27
#define U_NEAR 28

// Full-screen textures
#define U_DIFFUSE_TX 29
#define U_NORMAL_TX 30
#define U_DEPTH_TX 31
#define U_MISC_TX 32
#define U_OUT_TX 40
#define U_EDGE_TX 41
#define U_LAST_MISC_TX 44

// Object ID
#define U_OBJECT_ID 34
#define U_FLAGS 35

// Motion Blur
#define U_FRAME_TIME 37

// HDR Texture
#define U_HDR_TEXTURE 38

// CUDA Texture
#define U_CUDA_TEXTURE 39

#define U_LARGE_HORIZONTAL_BLUR_TX 42
#define U_SMALL_HORIZONTAL_BLUR_TX 43

#define U_RANDOM_TX 45

#endif // #ifndef FS_UNIFORM_DEFINES